<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<!-- 

Object.assign()：请使用 Object.assign() 方法来复制对象属性。编写代码展示该方法的使用，并解释其作用。

Object.is()：编写代码比较两个值，并使用 Object.is() 方法来进行相同性比较，展示与 === 操作符的区别。

Object.keys()，Object.values()，Object.entries()：编写代码展示如何通过这些方法获取对象的键名、值和键值对数组。并利用这些方法遍历对象。


-->
<script>
    // Object.assign()
    // 浅拷贝
    // 第一个参数是目标对象，从第二个参数开始他是被合并的对象
    // 同属性名，后面的会覆盖前面的
    // var obj = {
    //     name: 'jay',
    //     age: 18,
    // }
    // var obj2 = {
    //     name: 'joLin'
    // }
    // var a = Object.assign(obj);
    // var b = Object.assign(obj, obj2);
    // console.log(a);
    // console.log(b);


    // Object.is()
    // 可以解决NaN不等于自身的问题，以及+0和-0相等的问题
    // console.log('a' === 'a');//true
    // console.log(Object.is('a', 'a'));//true
    // console.log({} == {});//false
    // console.log(Object.is({}, {}));//false
    // console.log(+0 === -0);//true
    // console.log(Object.is(+0, -0));//false
    // console.log(NaN === NaN);//false
    // console.log(Object.is(NaN, NaN));//true

    // Object.keys()，Object.values()，Object.entries()
    // var a = {
    //     name: 'jay',
    //     age: 18,
    //     say() {
    //         console.log(`你好'${this.name}'`);

    //     }
    // }
    // console.log(Object.keys(a));
    // console.log(Object.values(a));
    // console.log(Object.entries(a));
    // // 遍历键名
    // Object.keys(a).forEach(key => {
    //     console.log(`Key: ${key}`);
    // });
    // // 遍历值
    // Object.values(a).forEach(value => {
    //     console.log(`Value: ${value}`);
    // });
    // // 遍历键值对
    // Object.entries(a).forEach(([key, value]) => {
    //     console.log(`Key: ${key}, Value: ${value}`);
    // });
</script>

</html>